﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using System.Windows.Forms;
using System.Drawing;

namespace showcolat
{
    public class DBconnect
    {
        private MySqlConnection connection;
        private string server;
        private string database;
        private string user;
        private string password;

        //constructeur
        public DBconnect()
        {
            Initialize();
        }

        //Initialisation des valeurs
        private void Initialize()
        {
            server = "localhost";
            database = "showcolat";
            user = "root";
            password = "";
            string connectionString;
            connectionString = "SERVER=" + server + ";" + "DATABASE=" +
            database + ";" + "UID=" + user + ";" + "PASSWORD=" + password + ";";
          
            connection = new MySqlConnection(connectionString);
        }

        //Ouvrir une connexion
        private bool openConnection()
        {
            try
            {
                connection.Open();
                return true;
            }
            catch(MySqlException ex)
            {
                //Lorsque l'on traite les erreurs, on peut demander a l'application de renvoyer une réponse 
                //Sur le numéro de l'erreur.
                //Les 2 erreurs les plus communes sont:
                //0: Connection au serveur impossible.
                //1045: Utilisateur ou mot de passe invalide.
                switch (ex.Number)
                {
                    case 0:
                        MessageBox.Show("Cannot connect to server.  Contact administrator");
                        break;

                    case 1045:
                        MessageBox.Show("Invalid username/password, please try again");
                        break;
                }
                return false;
            }
        }

        //fermer la connection
        private bool closeConnection()
        {
            try
            {
                connection.Close();
                return true;
            }
            catch(MySqlException ex)
            {
                MessageBox.Show(ex.Message);
                return false;
            }
        }
         public List<Diffusion> SelectSerie(string dateN)
        {
            
            string query = "SELECT S.id_serie, S.nom_serie, E.titre_episode, D.heure_diff, DU.nom_diffuseur, SA.num_saison FROM diffuser AS D INNER JOIN diffuseur AS DU ON DU.id_diffuseur = D.id_diffuseur INNER JOIN episode AS E ON E.id_episode = D.id_episode INNER JOIN saison AS SA ON SA.id_saison = E.id_saison INNER JOIN serie AS S ON S.id_serie = SA.id_serie INNER JOIN abonner AS A ON S.id_serie = A.id_serie INNER JOIN user AS U ON U.id_user = A.id_user WHERE D.date ='" + dateN.ToString() + "' AND U.id_user = 1";

            //Creer une liste pour stocker le resultat
            List<Diffusion> list = new List<Diffusion>();

            //Ouvre la conncection
            if (this.openConnection() == true)
            {
                //Creer la commande
                MySqlCommand cmd = new MySqlCommand(query, connection);
                //Creer un data reader et execute la commande
                MySqlDataReader dataReader = cmd.ExecuteReader();

                //lis les données et les stock dans la liste
                while (dataReader.Read())
                {
                    list.Add(new Diffusion
                    {
                        IdSerie = dataReader.GetInt32(0),
                        NomSerie = dataReader.GetString(1),
                        TitreEpisode = dataReader.GetString(2),
                        HeureDiff = dataReader.GetString(3),
                        NomDiffuseur = dataReader.GetString(4),
                        NumSaison = dataReader.GetInt32(5),
                    });
                }

                //ferme Data Reader
                dataReader.Close();

                //ferme Connection
                this.closeConnection();
            }

            //retourne la liste a afficher
            return list;
        }

         public List<user> Conn_user(string pseudo, string mdp)
         {

             string query = "SELECT * FROM user";
              
             //Creer une liste pour stocker le resultat
             List<user> list = new List<user>();

             //Ouvre la conncection
             if (this.openConnection() == true)
             {
                 //Creer la commande
                 MySqlCommand cmd = new MySqlCommand(query, connection);
                 //Creer un data reader et execute la commande
                 MySqlDataReader dataReader = cmd.ExecuteReader();

                 //lis les données et les stock dans la liste
                 while (dataReader.Read())
                 {
                     list.Add(new user
                     {
                         CId_user = dataReader.GetInt32(0),
                         CPseudo_user = dataReader.GetString(1),
                         mail = dataReader.GetString(2),
                         mdp_user = dataReader.GetString(3),
                     });
                 }

                 //ferme Data Reader
                 dataReader.Close();

                 //ferme Connection
                 this.closeConnection();
             }

             //retourne la liste a afficher
             return list;
         }
    }
}
